Logical Specifications for Functional Programs
نویسندگان
چکیده
We present a formal method of functional program develop ment based on step by step transformation In their most abstract form speci cations are essentially predicates that relate the result of the speci ed program to the free variables of that pro gram In their most concrete form speci cations are simply programs in a functional programming language Development from abstract speci cations to programs is calculational Using logic in the speci cation language has many advantages Impor tantly it allows nondeterministic speci cations to be given and thus does not force overspeci cation
منابع مشابه
Semantic Determinism and Functional Logic Program Properties
In modern functional logic languages like Curry or Toy, programs are possibly non-confluent and nonterminating rewrite systems, defining possibly non-deterministic non-strict functions. Therefore, equational reasoning is not valid for deriving properties of such programs. In a previous work we showed how a mapping from CRWL –a well known logical framework for functional logic programming– into ...
متن کاملAdapting functional programs to higher order logic
Higher-order logic proof systems combine functional programming with logic, providing functional programmers with a comfortable setting for the formalization of programs, specifications, and proofs. However, a possibly unfamiliar aspect of working in such an environment is that formally establishing program termination is necessary. In many cases, termination can be automatically proved, but th...
متن کاملCompositional Compiler Correctness with Quantified Types
We define operational logical relations between terms of a polymorphically typed functional language and low-level programs for a variant SECD machine. The relations, defined using biorthogonality and step-indexing, give extensional and compositional specifications expressing when low-level code and machine values realize typed source-level terms. We prove the correctness of a compiler and of s...
متن کاملHoare Logic, Executable Specifications and Logic Programs
Starting from Hoare correctness formulae {P} S {Q} which define first-order predicates S by their preand postconditions P and Q, I formulate logic specifications S ↔ P ∧ Q for the predicates. Subsequently, I discuss two methods to construct logic programs from logic specifications. First, I simply derive programs as the if-halves of their logic specifications. These programs are concise, readab...
متن کاملRealizing the Dependently Typed Λ-calculus
Dependently typed λ-calculi such as the Edinburgh Logical Framework (LF) can encode relationships between terms in types and can naturally capture correspondences between formulas and their proofs. Such calculi can also be given a logic programming interpretation: the system is based on such an interpretation of LF. We have considered whether a conventional logic programming language can also p...
متن کامل